/*!
 * jQuery Tools v1.2.5 - The missing UI library for the Web
 * 
 * scrollable/scrollable.js
 * toolbox/toolbox.mousewheel.js
 * 
 * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
 * 
 * http://flowplayer.org/tools/
 * 
 * jquery.event.wheel.js - rev 1 
 * Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
 * Liscensed under the MIT License (MIT-LICENSE.txt)
 * http://www.opensource.org/licenses/mit-license.php
 * Created: 2008-07-01 | Updated: 2008-07-14
 * 
 * -----
 * 
 */
(
    function (a) 
    {
        a.tools = a.tools || { version: "v1.2.5" },
        a.tools.scrollable = {
            conf: { 
                activeClass: "active",
                circular: !1,
                clonedClass: "cloned",
                disabledClass: "disabled",
                easing: "swing",
                initialIndex: 0,
                item: null,
                items: ".items",
                keyboard: !0,
                mousewheel: !1,
                next: ".next",
                prev: ".prev",
                speed: 400,
                vertical: !1,
                touch: !0,
                wheelSpeed: 0
            } 
    };

    function b(a, b) 
    {
        var c = parseInt(a.css(b), 10);
        if (c) return c;
        var d = a[0].currentStyle;
        return d && d.width && parseInt(d.width, 10)
    }

    function c(b, c) 
    {
        var d = a(c);
        return d.length < 2 ? d : b.parent().find(c)
    }

    var d;

    function e(b, e) 
    {
        var f = this, g = b.add(f), h = b.children(), i = 0, j = e.vertical;
        d || (d = f),
        h.length > 1 && (h = a(e.items, b)),
        a.extend(f, { 
            getConf: function () { return e }, getIndex: function () { return i },
            getSize: function () { return f.getItems().size() },
            getNaviButtons: function () { return m.add(n) },
            getRoot: function () { return b },
            getItemWrap: function () { return h },
            getItems: function () { return h.children(e.item).not("." + e.clonedClass) },
            move: function (a, b) { return f.seekTo(i + a, b) },
            next: function (a) { return f.move(1, a) },
            prev: function (a) { return f.move(-1, a) },
            begin: function (a) { return f.seekTo(0, a) },
            end: function (a) { return f.seekTo(f.getSize() - 1, a) },
            focus: function () { d = f; return f },
            addItem: function (b) { b = a(b), e.circular ? (h.children("." + e.clonedClass + ":last").before(b), h.children("." + e.clonedClass + ":first").replaceWith(b.clone().addClass(e.clonedClass))) : h.append(b), g.trigger("onAddItem", [b]); return f },
            seekTo: function (b, c, k) 
            {
                b.jquery || (b *= 1);
                if (e.circular && b === 0 && i == -1 && c !== 0) return f;
                if (!e.circular && b < 0 || b > f.getSize() || b < -1) return f; 
                var l = b; b.jquery ? b = f.getItems().index(b) : l = f.getItems().eq(b); 
                var m = a.Event("onBeforeSeek"); 
                if (!k) 
                { 
                    g.trigger(m, [b, c]); 
                    if (m.isDefaultPrevented() || !l.length) return f 
                } 
                var n = j ? { top: -l.position().top} : { left: -l.position().left }; 
                i = b, 
                d = f, 
                c === undefined && (c = e.speed), 
                h.animate(n, c, e.easing, k || function () { g.trigger("onSeek", [b]) }); 
                return f 
            } 
        }), 
        a.each(
            ["onBeforeSeek", "onSeek", "onAddItem"], 
            function (b, c) { 
                a.isFunction(e[c]) && a(f).bind(c, e[c]), f[c] = function (b) { b && a(f).bind(c, b); return f } });
                if (e.circular) 
                {
                    var k = f.getItems().slice(-1).clone().prependTo(h),
                    l = f.getItems().eq(1).clone().appendTo(h);

                    k.add(l).addClass(e.clonedClass),
                    
                    f.onBeforeSeek(
                        function (a, b, c) 
                        {
                            if (!a.isDefaultPrevented()) 
                            {
                                if (b == -1) 
                                {
                                    f.seekTo(k, c, function () { f.end(0) });
                                    return a.preventDefault()
                                }
                                b == f.getSize() && f.seekTo(l, c, function () { f.begin(0) })
                            } 
                        }),
                    f.seekTo(0, 0, function () { })
                    }

                    var m = c(b, e.prev).click(function () { f.prev() }),
                        n = c(b, e.next).click(function () { f.next() });
                 
                    !e.circular && f.getSize() > 1 && (f.onBeforeSeek(function (a, b) { setTimeout(function () { a.isDefaultPrevented() || (m.toggleClass(e.disabledClass, b <= 0), n.toggleClass(e.disabledClass, b >= f.getSize() - 1)) }, 1) }), e.initialIndex || m.addClass(e.disabledClass)), e.mousewheel && a.fn.mousewheel && b.mousewheel(function (a, b) { if (e.mousewheel) { f.move(b < 0 ? 1 : -1, e.wheelSpeed || 50); return !1 } }); if (e.touch) { var o = {}; h[0].ontouchstart = function (a) { var b = a.touches[0]; o.x = b.clientX, o.y = b.clientY }, h[0].ontouchmove = function (a) { if (a.touches.length == 1 && !h.is(":animated")) { var b = a.touches[0], c = o.x - b.clientX, d = o.y - b.clientY; f[j && d > 0 || !j && c > 0 ? "next" : "prev"](), a.preventDefault() } } } e.keyboard && a(document).bind("keydown.scrollable", function (b) { if (e.keyboard && !b.altKey && !b.ctrlKey && !a(b.target).is(":input")) { if (e.keyboard != "static" && d != f) return; var c = b.keyCode; if (j && (c == 38 || c == 40)) { f.move(c == 38 ? -1 : 1); return b.preventDefault() } if (!j && (c == 37 || c == 39)) { f.move(c == 37 ? -1 : 1); return b.preventDefault() } } }), e.initialIndex && f.seekTo(e.initialIndex, 0, function () { }) } a.fn.scrollable = function (b) { var c = this.data("scrollable"); if (c) return c; b = a.extend({}, a.tools.scrollable.conf, b), this.each(function () { c = new e(a(this), b), a(this).data("scrollable", c) }); return b.api ? c : this } 
    
    }
)(jQuery);
//alert(jQuery);



(
    function (a)
    {
        //alert(a);
        a.fn.mousewheel=function(a){return this[a?"bind":"trigger"]("wheel",a)},
        a.event.special.wheel={setup:function(){a.event.add(this,b,c,{})},
        teardown:function(){a.event.remove(this,b,c)}
    };

    var b=a.browser.mozilla?"DOMMouseScroll"+(a.browser.version<"1.9"?" mousemove":""):"mousewheel";
    //alert(b);
    //alert(a.browser.mozilla);
    function c(b)
    {
        switch(b.type)
        {
            case"mousemove":return a.extend(b.data,{clientX:b.clientX,clientY:b.clientY,pageX:b.pageX,pageY:b.pageY});
            case"DOMMouseScroll":a.extend(b,b.data),b.delta=-b.detail/3;
                break;
            case"mousewheel":b.delta=b.wheelDelta/120}b.type="wheel";
            return a.event.handle.call(this,b,b.delta)
         }
    }
)(jQuery);
//alert(jQuery);
